Most computing devices are made up of various hardware-based subsystems that each incorporate complex digital logic cooperating with complex support software. As the range of capabilities of computing devices has continued to increase, so has the complexity of the digital logic of many of these subsystems. Incorporating state machines and/or processing components that execute independent sequences of instructions into many of these subsystems has become commonplace, resulting in increases in instances of those subsystems entering into an inoperative state in which they are rendered incapable of continuing to perform their functions.
Such an inoperative state can arise where unexpected, inconsistent and/or ill-timed inputs are provided to such complex digital logic. An undefined state may be entered into from which neither the digital logic itself or whatever sequence of instructions that it executes is able to return. Such situations are often referred to as a “lock up” or “hang.” In such a state, such digital logic may become unresponsive to new inputs intended to cause a “reset” of that digital logic to a known initial state from which the digital logic may then be caused to return to normal functionality.
For a user of a computing device in which such an event occurs involving one of its subsystems (e.g., a subsystem for graphical display, audio output, network communications, data storage, user input, etc.), such an event and the accompanying inability to make use of software or another mechanism to act solely on that portion to regain normal functionality (even where users are able to recognize what has happened) provides a frustrating user experience. In such cases, users are often confronted with the stark choice of either attempting to make further use of that computing device without the benefit of the normal functionality of that subsystem, or acting to reset the entirety of that computing device, the latter choice often proving to be time consuming and/or entailing the loss of data.